package com.panshi.service;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.sun.jersey.core.util.Base64;
import org.springframework.stereotype.Service;

import java.io.ByteArrayInputStream;
import java.util.UUID;

@Service
public class UserService {

    /*链接阿里云*/
    // Endpoint以杭州为例，其它Region请按实际情况填写。
    private String endpoint = "http://oss-cn-beijing.aliyuncs.com";
    // 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录 https://ram.console.aliyun.com 创建RAM账号。
    private String accessKeyId = "LTAI4GBFxMGpooVNmUj79Hko";
    private String accessKeySecret = "eraDodgQU71xnQtSrWbC7Mv9buJOrd";


    public String upload(String imageString,String dir){

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySecret);

        // 使用前端插件时可能有前有（"data:image/xxxx;base64,"）
        // 获取图片格式
        String suffix = imageString.substring(11,imageString.indexOf(";"));
        // 使用插件传输产生的前缀
        String prefix = imageString.substring(0,imageString.indexOf(",") + 1);
        // 替换前缀为空
        imageString = imageString.replace(prefix,"");
        // imageString = imageString.substring(imageString.indexOf(",") + 1);

        Base64 base64 = new Base64();
        byte[] imageByte =  base64.decode(imageString);

        // 打包时将出现内部专用api异常
        // BASE64Decoder decoder = new BASE64Decoder();
        // byte[] imageByte = decoder.decodeBuffer(imageString);

        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(imageByte);

        // InputStream binaryStream = serialBlob.getBinaryStream();
        // SerialBlob serialBlob = new SerialBlob(imageByte);
        // dir为图片目录
        String key= getFilename(suffix,dir);

        ossClient.putObject("mysheng", key, byteArrayInputStream);
        ossClient.shutdown();

        return "http://mysheng.oss-cn-beijing.aliyuncs.com/"+key;
    }

    // 生成文件名加目录
    public String getFilename(String suffix, String dir){
        // 使用uuid生成唯一文件名
        String uuid = UUID.randomUUID().toString();
        return dir+ "/" + uuid + "." +suffix;
    }
}
